package com.yun.algorithm.dynamicprogramming.leetcode;

import java.util.Arrays;

/*
    给定两个单词 word1 和 word2 ，返回使得 word1 和  word2 相同所需的最小步数。

每步 可以删除任意一个字符串中的一个字符。
 */
/*
          0   s    e   a
      0   0   0    0   0
      e   0
      a   0
      t   0
 */
public class E03Leetcode583 {
    public int minDistance(String word1, String word2) {
        int[][] dp=new int[word1.length()+1][word2.length()+1];
        char[] ch1=word1.toCharArray();
        char[] ch2=word2.toCharArray();
        int m=word1.length();
        int n=word2.length();
        for (int i = 1; i < m+1; i++) {
            for (int j = 1; j < n+1; j++) {
                if(ch1[i-1]==ch2[j-1]){
                    dp[i][j]=dp[i-1][j-1];
                }else {
                    dp[i][j]=Math.min(dp[i-1][j]+1,dp[i][j-1]+1);
                }
            }
        }
        System.out.println();
        for (int i = 0; i < m+1; i++) {
            System.out.println(Arrays.toString(dp[i]));
        }
        return dp[m][n];
    }

    public static void main(String[] args) {
        String word1="leetcode";
        String word2="etco";
        new E03Leetcode583().minDistance(word1,word2);
    }
}
